Các đặc điểm mới trong Python 3.x Python_(ngôn_ngữ_lập_trình)

Nội dung phần này được trích từ tài liệu[31] của Guido van Rossum. Phần này không liệt kê đầy đủ tất cả các đặc điểm; chi tiết xin xem tài liệu nói trên.

Một số thay đổi cần lưu ý nhất

  • Lệnh print trở thành hàm print(). Theo đó sau print() ta cần nhớ gõ vào cặp ngoặc ():
    print("Goodbye")print(2+3)
  • Trả lại kết quả không còn là list trong một số trường hợp.
    • dict.keys(), dict.items(), dict.values() kết quả cho ra các "view" thay vì list.
    • mapfilter trả lại các iterator.
    • range bây giờ có tác dụng như xrange, và không trả lại list.
  • So sánh

Không còn hàm cmp, và cmp(a, b) có thể được thay bằng (a > b) - (a < b)

  • Số nguyên
    • Kiểu long được đổi tên thành int.
    • 1/2 cho ta kết quả là số thực chứ không phải số nguyên.
    • Không còn hằng số sys.maxint
    • Kiểu bát phân được ký hiệu bằng 0o thay vì 0, chẳng hạn 0o26.
  • Phân biệt văn bản - dữ liệu nhị phân thay vì Unicode - chuỗi 8-bit
    • Tất cả chuỗi văn bản đều dưới dạng Unicode, nhưng chuỗi Unicode mã hóa lại là dạng dữ liệu nhị phân. Dạng mặc định là UTF-8.
    • Không thể viết u"a string" để biểu diễn chuỗi như trong các phiên bản 2.x

Các thay đổi về cú pháp

Cú pháp mới

  • Các tham biến chỉ chấp nhận keyword: Các tham biến phía sau *args phải được gọi theo dạng keyword.
  • Từ khóa mới nonlocal. Muốn khai báo một biến x với có phạm vi ảnh hưởng rộng hơn, nhưng chưa đến mức toàn cục, ta dùng nonlocal x.
  • Gán giá trị vào các phần tử tuple một cách thông minh, chẳng hạn có thể viết (a, *rest, b) = range(5) để có được a = 0; b = [1,2,3]; c = 4.
  • Dictionary comprehension, chẳng hạn {k: v for k, v in stuff} thay vì dict(stuff).
  • Kiểu nhị phân, chẳng hạn b110001.

Cú pháp được thay đổi

  • raise [biểu_thức [from biểu_thức]]
  • except lệnh as biến
  • Sử dụng metaclass trong đối tượng:
    class C(metaclass=M):    pass
    Cách dùng biến __metaclass__ không còn được hỗ trợ.

Cú pháp bị loại bỏ

  • Không còn dấu ``, thay vì đó, dùng repr.
  • Không còn so sánh <> (dùng !=).
  • Không còn các lớp kiểu classic.